﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

/*************************************************************************************
 **接口：可以声明属性、方法、事件、索引器，继承此接口的类，需要将接口上的所有成员实现。
 **接口是各类的规范，但类可以延伸接口的定义，例如某属性在接口中只有Get，在实现的类中，
 **可以增加Set访问权限。
 **接口还有以下特点：
 **1、隔离性：当类继承多个接口时，将类的实例赋值给接口定义的变量，接口只能访问自身有的
 **   成员
 **2、多态性：接口定义的变量，可以指向不同的继承类的实例，这样可以访问不同实例的成员
 ************************************************************************************/


namespace InterfaceTest
{
    class Program
    {
        static void Main(string[] args)
        {
            ITest test1;// = new CTest1();
            ITest2 test2;// = new CTest2();

            CTest1 cTest1 = new CTest1();
            CTest2 cTest2 = new CTest2();
            test1 = cTest1;
            test2 = cTest2;

            cTest1.Hello();
            cTest1.say("cTest1");
            test1.say("test1");

            test1 = cTest2;

            cTest2.Hello();
            cTest2.say("cTest2");
            test1.say("test2");

            test2.Hello();
            Console.ReadKey();
        }
    }
}
